Portable personal computers (PCs) were first introduced in the early 1980s and have since enjoyed great commercial success and consumer acceptance. As the portable PC market has grown, users have begun to demand lighter weight, lower volume PCs which can be used for longer periods of time between battery charges. Meeting these demands has proved challenging in view of the fact that most portable PCs now support peripheral devices previously available only on desktop PCs. The additional peripherals greatly increase overall power consumption, making it difficult to achieve an optimal level of functionality while maintaining an acceptable battery life. Furthermore, it has also become desirable to more efficiently manage the power consumption of non-battery powered desktop PCs in order to minimize overall operating costs.
One solution has been to design into the computer's basic input/output system (BIOS) a pre-packaged power management routine, or to load into the computer's operating system (OS) a pre-packaged driver, such as the Microsoft.TM./Intel.TM. Advanced Power Management (APM) driver, that regulates the application of power to certain devices by placing such devices in an "idle" state when demand for such devices is low. For example, when die central processing unit (CPU) is not executing a program, its power consumption can be reduced considerably by decreasing the speed at which it operates. Further examples include turning off the LCD backlight or blanking the monitor screen after a period of keyboard inactivity and stopping the hard-disk drive motor after the drive has not been accessed for a preset internal of time.
Once the power to the CPU, an I/O device, or other peripheral device is reduced the device can be powered back up if there is a demand for that device. The device though does not "wake up," i.e., regain its full capabilities, instantly, but rather requires a finite amount of time, or "latency," to do so.
A problem with power management systems, as they are currently available, is that important data may be lost during the latency of the CPU when data is initially transmitted to it Specifically, such a loss of data can result when the CPU is connected to critical, "real-time" devices such as serial peripheral I/O devices, including instrumentation interfaces, modems, and PCMCIA controllers, that transmit data serially to the CPU. These devices typically include a buffer for storing a limited number of bytes of data to be transmitted to the CPU. Once the buffer is full, the stored bytes are overwritten by new incoming bytes of data It can be appreciated that bytes of data can thus be stored in the buffer for only a limited amount of time, and if that time is less than the latency of the CPU, then data will be lost.
The latency problem may be avoided by selectively disabling the computer's power management system. Most conventional power management systems, prepackaged with available computer operating systems, have the capability to selectively enable and disable their power management functions. However, this defeats the purpose of the power management system because all devices would then utilize full power and the user would forfeit the advantages of power management. While some such systems can be operated by the user to selectively disable only certain devices, many do not have this capability and, in particularly, cannot be operated to disable power management functions with respect to the CPU only, while remaining enabled for the other devices.
What is needed, therefore, is a system for overriding, the operation of a computer's prepackaged power management system that disables power management functions of the CPU only, without disabling power management for other devices, to thereby solve the CPU latency problem when a power managed computer is operated in connection with serial data devices.